{
  description = "DevOS environment configuriguration library.";

  nixConfig.extra-experimental-features = "nix-command flakes";
  nixConfig.extra-substituters = "https://nrdxp.cachix.org https://nix-community.cachix.org";
  nixConfig.extra-trusted-public-keys = "nrdxp.cachix.org-1:Fc5PSqY2Jm1TrWfm88l6cvGWwz3s93c6IOifQWnhNW4= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=";

  inputs = {
    # Track channels with commits tested and built by hydra
    nixpkgs.url = "github:nixos/nixpkgs/nixos-22.05";
    nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";

    nixlib.url = "github:nix-community/nixpkgs.lib";

    deploy.url = "github:serokell/deploy-rs";
    deploy.inputs.nixpkgs.follows = "nixpkgs";

    home-manager.url = "github:nix-community/home-manager/release-22.11";
    home-manager.inputs.nixpkgs.follows = "nixlib";
    home-manager.inputs.utils.follows = "flake-utils";

    darwin.url = "github:LnL7/nix-darwin";
    darwin.inputs.nixpkgs.follows = "nixpkgs";

    devshell.url = "github:numtide/devshell";
    devshell.inputs.nixpkgs.follows = "nixpkgs";

    flake-utils.url = "github:numtide/flake-utils";
    flake-utils-plus.url = "github:gytis-ivaskevicius/flake-utils-plus/?ref=refs/pull/120/head";
    flake-utils-plus.inputs.flake-utils.follows = "flake-utils";

    flake-compat = {
      url = "github:edolstra/flake-compat";
      flake = false;
    };
  };

  outputs = {
    self,
    nixlib,
    nixpkgs,
    deploy,
    devshell,
    flake-utils-plus,
    darwin,
    home-manager,
    ...
  } @ inputs: let
    tests = import ./src/tests.nix {inherit (nixlib) lib;};

    internal-modules = import ./src/modules.nix {
      inherit (nixlib) lib;
    };

    importers = import ./src/importers.nix {
      inherit (nixlib) lib;
    };

    collectors = import ./src/collectors.nix {
      inherit (nixlib) lib;
    };

    generators = import ./src/generators.nix {
      inherit (nixlib) lib;
      inherit deploy;
    };

    mkFlake = let
      mkFlake' = import ./src/mkFlake {
        inherit (nixlib) lib;
        inherit
          collectors
          darwin
          deploy
          devshell
          home-manager
          flake-utils-plus
          internal-modules
          tests
          ;
      };
    in {
      __functor = _: args: (mkFlake' args).flake;
      options = args: (mkFlake' args).options;
    };

    # Unofficial Flakes Roadmap - Polyfills
    # This project is committed to the Unofficial Flakes Roadmap!
    # .. see: https://demo.hedgedoc.org/s/_W6Ve03GK#

    # Super Stupid Flakes (ssf) / System As an Input - Style:
    supportedSystems = flake-utils-plus.lib.defaultSystems;

    # Pass this flake(self) as "digga"
    polyfillInputs = self.inputs // {digga = self;};
    polyfillOutput = loc:
      nixlib.lib.genAttrs supportedSystems (
        system:
          import loc {
            inherit system;
            inputs = polyfillInputs;
          }
      );
    # .. we hope you like this style.
    # .. it's adopted by a growing number of projects.
    # Please consider adopting it if you want to help to improve flakes.

    # DEPRECATED - will be removed timely
    deprecated = import ./deprecated.nix {
      inherit (nixlib) lib;
      inherit importers;
    };
  in {
    # what you came for ...
    lib = {
      inherit (flake-utils-plus.inputs.flake-utils.lib) defaultSystems eachSystem eachDefaultSystem filterPackages;
      inherit (flake-utils-plus.lib) exportModules exportOverlays exportPackages mergeAny;
      inherit mkFlake;
      inherit (tests) mkTest allProfilesTest;
      inherit (importers) flattenTree rakeLeaves importOverlays importExportableModules importHosts;
      inherit (generators) mkDeployNodes mkHomeConfigurations;
      inherit
        (collectors)
        collectHosts
        collectHostsOnSystem
        ;

      # editorconfig-checker-disable
      # DEPRECATED - will be removed soon
      inherit
        (deprecated)
        # Place any deprecated lib functions here
        
        ;
      # editorconfig-checker-enable
    };

    # a little extra service ...
    overlays = import ./overlays {inherit inputs;};
    nixosModules = import ./modules/nixos-modules.nix;
    darwinModules = import ./modules/darwin-modules.nix;

    defaultTemplate = self.templates.devos;
    templates.devos.path = ./examples/devos;
    templates.devos.description = ''
      an awesome template for NixOS users, with consideration for common tools like home-manager, devshell, and more.
    '';

    # digga-local use
    ## This doesn't appear to be used?
    formatter = nixlib.lib.genAttrs supportedSystems (s: nixpkgs.legacyPackages.${s}.treefmt);
    # system-space and pass sytem and input to each file
    jobs = polyfillOutput ./jobs;
    checks = polyfillOutput ./checks;
    devShell = polyfillOutput ./shell;
  };
}
